package br.edu.granbery.indianostore.action;

import br.edu.granbery.indianostore.controller.Action;
import br.edu.granbery.indianostore.dao.DaoFactory;
import br.edu.granbery.indianostore.dao.ProdutoDao;
import br.edu.granbery.indianostore.model.Produto;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Luiz
 */
public class CadastrarProdutoAction implements Action {

    @Override
    public void execute(HttpServletRequest request,HttpServletResponse response) throws IOException {

        String nome = request.getParameter("txtNome");
        String descricao = request.getParameter("txtDescricao");
        String fornecedor = request.getParameter("txtFornecedor");
        String valor = request.getParameter("txtValor");
        String foto = request.getParameter("txtFoto");
        String estado = request.getParameter("txtEstado");
        RequestDispatcher view;
        if (nome.equals("") || descricao.equals("") || fornecedor.equals("")
                || valor.equals("") || foto == null || estado.equals("")) {
            request.setAttribute("erro", "Preencha todos os campos corretamente");
        } else {
            HttpSession sessao = request.getSession(true);
            DaoFactory factory = (DaoFactory)sessao.getAttribute("factory");
            Produto produto = new Produto();
            ProdutoDao produtoDao = factory.getProdutoDao();
            factory.beginTransaction();
            if (produtoDao.inserir(produto)) {
                request.setAttribute("sucess", "Produto cadastrado com sucesso.");
                factory.commit();
            } else {
                request.setAttribute("erro", "Erro ao cadastrar produto.");
                if (factory.hasTransaction()) {
                    factory.stopTransaction();
                }
            }
            produtoDao.destruir(produto);
        }
        try {
            view = request.getRequestDispatcher("/View/Produto/CadastrarProduto.jsp");
            view.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(CadastrarProdutoAction.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
